/* ===================

AX2E (AXESCON XACML 2.0 Engine) is the Java authorization engine, which implements OASIS XACML 2.0 standard.
Copyright (C) 2007 AXESCON LLC

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA


Contact: AXESCON LLC - info{at}axescon.com

 =================== */
/*
 * XML Type:  VariableDefinition
 * Namespace: urn:oasis:names:tc:xacml:2.0:policy:schema:os
 * Java type: axescon.xacml.model.policy.VariableDefinition
 *
 * Automatically generated - do not modify.
 */
package axescon.xacml.model.policy.impl;

import axescon.xacml.api.XacmlException;
import axescon.xacml.model.policy.Expression;
import axescon.xacml.model.policy.VariableDefinition;

/**
 * An XML VariableDefinition(@urn:oasis:names:tc:xacml:2.0:policy:schema:os).
 * <p/>
 * This is a complex type.
 */
public class VariableDefinitionImpl extends PolicyModelObjectImpl implements axescon.xacml.model.policy.VariableDefinition {
    private Expression expression;

    public VariableDefinitionImpl(String variableId) throws XacmlException {
        if (variableId == null) throw new XacmlException("syntax error. VariableDefinition id cant be null");
        this.variableId = variableId;
    }

    private String variableId;

    public Expression getExpression() {
        return expression;
    }

    public void setExpression(Expression expression) {
        this.expression = expression;
    }

    public String getVariableId() {

        return variableId;
    }

    public void setVariableId(String variableId) {
        this.variableId = variableId;
    }

    public int compareTo(Object o) {
        // this should be caught when policy is loaded, should never occur here
        assert getVariableId() != null: "syntax error. VariableDefinition id cant be null";

        if (o == null || !(o instanceof VariableDefinition))
            throw new IllegalArgumentException("can't compare VariableDefinition to " + o);
        return getVariableId().compareTo(((VariableDefinition) o).getVariableId());
    }

    public int hashCode() {
        // this should be caught when policy is loaded, should never occur here
        assert getVariableId() != null: "syntax error. VariableDefinition id cant be null";

        return getVariableId().hashCode();
    }

    public boolean equals(Object o) {
        // this should be caught when policy is loaded, should never occur here
        assert getVariableId() != null: "syntax error. VariableDefinition id cant be null";

        if (o == null || !(o instanceof VariableDefinition))
            return false;
        return getVariableId().equals(((VariableDefinition) o).getVariableId());
    }

}
